package com.mtw.bbs.article.service;


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mtw.bbs.article.pojo.entity.TopicIndex;
import com.mtw.bbs.article.pojo.form.TopicForm;
import com.mtw.bbs.article.pojo.vo.TopicAdminVo;
import com.mtw.bbs.article.pojo.vo.TopicVo;
import com.mtw.bbs.article.pojo.vo.UserTopicVo;

import java.util.List;

/**
 *
 *
 */
public interface TopicIndexService extends IService<TopicIndex> {



    /**
     * 管理分页获取话题
     * @param page          当前页
     * @param size          分页大小
     * @param qw            查询条件
     * @return              分页结果
     */
    Page<TopicAdminVo> getAdminPage(int page, int size, QueryWrapper<TopicIndex> qw);



    /**
     * 分页获取话题
     * @param page          当前页
     * @param size          分页大小
     * @param qw            查询条件
     * @return              分页结果
     */
    Page<TopicVo> getTopicVoPage(int page, int size, QueryWrapper<TopicIndex> qw);




    /**
     * 分页获取简单话题
     * @param page          当前页
     * @param size          分页大小
     * @param qw            查询条件
     * @return              分页结果
     */
    Page<TopicVo> getSimpleTopicVoPage(int page, int size, QueryWrapper<TopicIndex> qw);



    /**
     * 获取用户加入的话题
     * @param isAdmin       是否查管理的，true为查用户管理的话题，false为全部
     * @param userId        用户id
     * @return              分页结果
     */
    Page<UserTopicVo> getUserJoinTopicVoPage(int page, int size, boolean isAdmin, String userId);



    /**
     * 新增话题
     */
    boolean saveTopic(TopicForm form);


    /**
     * 新增话题，管理员新增
     */
    boolean saveTopicByAdmin(TopicForm form);



    /**
     * 更新话题
     */
    boolean updateTopic(TopicForm form);



    /**
     * 更新话题，管理员更新
     */
    boolean updateByAdmin(TopicForm form);


    /**
     *  获取话题详情
     * @param id        主键id
     * @return          话题vo
     */
    TopicVo getTopicInfo(String id);



    /**
     *  获取话题详情,并带出话题成员
     * @param id        主键id
     * @return          话题vo
     */
    TopicVo getTopicInfoWithMember(String id);


    /**
     * 删除话题
     * @param id 话题id
     */
    boolean deleteTopicById(String id);



    /**
     * 设置话题封面url
     */
    void setCoverUrl(List<TopicVo> list);





}

